جزوه جامع فصل پنجم · راه‌اندازی، بوت‌لودر، مجازی‌سازی ← بازگشت به فهرست
📘 فصل پنجم · راه‌اندازی، بوت‌لودر، مدیریت سرویس‌ها و مجازی‌سازی مرور جامع نکات امتحانی
📅 تاریخ: ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian · 📦 Red Hat

▍ ۱. معرفی و مراحل راه‌اندازی لینوکس

فرآیند بوت شامل مراحل زیر است: روشن شدن → BIOS/UEFI (اجرای POST و شناسایی دستگاه‌ها) → انتخاب دستگاه بوت → اجرای Bootloader (GRUB) → بارگذاری هسته (Kernel) → اجرای اولین پردازش (systemd با PID 1) → اجرای فایل‌های target → ورود کاربر.

اولین پردازش در لینوکس همیشه systemd (یا در سیستم‌های قدیمی‌تر init) است که PID شماره ۱ را دارد.

• نمایش پیام‌های راه‌اندازی با dmesg

┌──(ya3in㉿kali)-[~] └─$ dmesg | head -20 [ 0.000000] Linux version 6.1.0-kali7-amd64 ... [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... [ 0.000000] BIOS-provided physical RAM map: ...

توضیح: dmesg پیام‌های kernel ring buffer را نمایش می‌دهد. این پیام‌ها شامل اطلاعات سخت‌افزاری، شناسایی دستگاه‌ها و وضعیت راه‌اندازی هستند.

• مشاهده لاگ‌های بوت با journalctl

┌──(ya3in㉿kali)-[~] └─$ sudo journalctl -b | head -20

توضیح: journalctl -b پیام‌های جلسه بوت فعلی را از systemd نمایش می‌دهد.

فایل‌های لاگ بوت: در دبیان /var/log/boot و در رد هت /var/log/boot.log.

▍ ۲. بوت‌لودر GRUB

🔴 GRUB Legacy

  • فایل: /boot/grub/menu.lst (دبیان) یا grub.conf (رد هت)
  • ویرایش مستقیم فایل
  • پشتیبانی محدود از UEFI

🔵 GRUB 2

  • فایل: /boot/grub/grub.cfg (BIOS) یا /boot/efi/EFI/.../grub.cfg (UEFI)
  • هرگز فایل grub.cfg را ویرایش نکنید!
  • پشتیبانی کامل از UEFI
  • از فایل‌های /etc/default/grub و /etc/grub.d/ استفاده می‌کند
در GRUB 2، برای به‌روزرسانی تنظیمات از grub-mkconfig استفاده کنید: sudo grub-mkconfig -o /boot/grub/grub.cfg (در دبیان) و sudo grub2-mkconfig -o /boot/grub2/grub.cfg (در رد هت).

• پارامترهای مهم هسته در GRUB

پارامترتوضیح
roسیستم فایل ریشه را فقط خواندنی Mount می‌کند.
rwسیستم فایل ریشه را خواندنی-نوشتنی Mount می‌کند.
root=تغییر سیستم فایل ریشه
init=اجرای برنامه مشخص به جای /sbin/init (مثلاً init=/bin/bash)
single یا 1 یا Sبوت در حالت تک‌کاربره (SysVinit)
systemd.unit=بوت به target مشخص در systemd (مثلاً rescue.target)
selinux=0غیرفعال‌سازی SELinux در زمان بوت
پارامترهای single، 1 و S برای ورود به حالت تک‌کاربره و systemd.unit=rescue.target برای حالت rescue در systemd استفاده می‌شوند.

▍ ۳. Single User Mode (حالت تک‌کاربره)

حالت تک‌کاربره برای ریست رمز root، تعمیر فایل سیستم و رفع مشکلات بوت استفاده می‌شود. روش ورود در توزیع‌های مختلف متفاوت است.

🟠 دبیان / اوبونتو

در منوی GRUB، روی گزینه بوت E بزنید و به خط linux بروید. ro را به rw تغییر دهید و init=/bin/bash را اضافه کنید.

linux /boot/vmlinuz-... root=UUID=... ro quiet # تغییر به: linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash

🔵 رد هت / الما / سنت‌اواس

در منوی GRUB، E بزنید و به خط linux بروید. rd.break enforcing=0 را اضافه کنید.

linux /vmlinuz-... root=UUID=... ro quiet # تغییر به: linux /vmlinuz-... root=UUID=... rd.break enforcing=0

• مراحل ریست رمز در الما ۱۰ (رد هت)

مراحل گام‌به‌گام

  1. rd.break enforcing=0 را به پارامترهای بوت اضافه کنید.
  2. mount -o remount,rw /sysroot → سیستم فایل ریشه را خواندنی-نوشتنی کنید.
  3. chroot /sysroot → وارد محیط سیستم اصلی شوید.
  4. passwd root → رمز جدید root را تنظیم کنید.
  5. exit → از chroot خارج شوید.
  6. reboot -f → سیستم را ری‌استارت کنید.
در اوبونتو نیازی به chroot نیست، اما در رد هت/الما حتماً باید chroot /sysroot را اجرا کنید. اگر SELinux فعال است، touch /.autorelabel را اجرا کنید یا از enforcing=0 استفاده کنید.

▍ ۴. مدیریت سرویس‌ها (systemd و SysVinit)

🔵 systemd (جدید)

  • دستور اصلی: systemctl
  • فایل‌های سرویس: .service در /lib/systemd/system/
  • مدیریت وابستگی: After, Before, Wants
  • Targetها: graphical.target (GUI), multi-user.target (بدون GUI)
  • اجرای موازی (سریع‌تر)

🔴 SysVinit (قدیمی)

  • دستور اصلی: service و chkconfig
  • اسکریپت‌ها: /etc/init.d/
  • مدیریت وابستگی: ترتیب اعداد در Runlevelها
  • Runlevelها: 0-6 (۳ = چند کاربره با شبکه، ۵ = چند کاربره با GUI)
  • اجرای ترتیبی (کندتر)

• وضعیت (STATE) سرویس‌ها در systemd

STATEتوضیح
enabledسرویس در زمان بوت به‌طور خودکار شروع می‌شود.
disabledسرویس در زمان بوت شروع نمی‌شود.
staticسرویس فقط در صورت وابستگی سرویس دیگر شروع می‌شود.
maskedسرویس به‌طور کامل غیرفعال است و حتی نمی‌توان آن را دستی شروع کرد.
┌──(ya3in㉿kali)-[~] └─$ systemctl list-unit-files --type=service | head -10

توضیح: نمایش وضعیت همه فایل‌های سرویس.

• دستورات خاموش‌سازی سیستم

دستورتوضیح
haltتمام فرآیندها را متوقف کرده و CPU را خاموش می‌کند (اما برق را قطع نمی‌کند).
poweroffفرآیندها را متوقف کرده، CPU را خاموش و به سخت‌افزار سیگنال قطع برق می‌فرستد.
rebootسیستم را ری‌استارت می‌کند.
تفاوت halt و poweroff: halt فقط CPU را متوقف می‌کند، اما poweroff به سخت‌افزار نیز سیگنال قطع برق می‌فرستد.

▍ ۵. ارسال پیام به کاربران

روشفایل/دستورزمان نمایش
قبل از ورود (محلی)/etc/issueقبل از لاگین روی کنسول محلی
قبل از ورود (شبکه)/etc/issue.netقبل از لاگین SSH
بعد از ورود/etc/motdبعد از لاگین (همه کاربران)
پیام اختصاصی (همه)wallهر زمان (همه کاربران لاگین‌شده)
پیام اختصاصی (GUI)notify-sendهر زمان (محیط گرافیکی)
پیام اختصاصی (ایمیل)mailهر زمان
برای نمایش پیام قبل از لاگین در SSH از فایل /etc/issue.net استفاده می‌شود.

▍ ۶. مجازی‌سازی در لینوکس

• انواع Hypervisor

KVM یک Hypervisor Type 1 است که بخشی از هسته لینوکس است.

• KVM (Kernel-based Virtual Machine)

برای بررسی پشتیبانی سخت‌افزاری از مجازی‌سازی:

┌──(ya3in㉿kali)-[~] └─$ grep -E "vmx|svm" /proc/cpuinfo

توضیح: vmx = Intel VT-x، svm = AMD-V.

نصب KVM روی دبیان:

┌──(ya3in㉿kali)-[~] └─$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager └─$ sudo systemctl enable --now libvirtd

نصب KVM روی الما/رد هت:

┌──(user㉿almalinux)-[~] └─$ sudo dnf install qemu-kvm libvirt virt-install virt-manager bridge-utils
ابزارهای مدیریت KVM: virt-manager (GUI)، virsh (CLI) و virt-install (ایجاد VM).

• Docker

نصب Docker روی دبیان:

┌──(ya3in㉿kali)-[~] └─$ sudo apt install ca-certificates curl └─$ sudo install -m 0755 -d /etc/apt/keyrings └─$ sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc └─$ sudo chmod a+r /etc/apt/keyrings/docker.asc └─$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null └─$ sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin └─$ sudo systemctl enable docker --now

نصب Docker روی الما/رد هت:

┌──(user㉿almalinux)-[~] └─$ sudo dnf install -y dnf-plugins-core └─$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo └─$ sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin └─$ sudo systemctl enable docker --now
دستور تأیید نصب Docker: sudo docker run hello-world. برای اجرای بدون sudo: sudo usermod -aG docker $USER.

• Proxmox VE

Proxmox VE یک پلتفرم مجازی‌سازی متن‌باز بر پایه Debian است که از KVM (برای ماشین‌های مجازی) و LXC (برای کانتینرها) استفاده می‌کند. دارای رابط وب با پورت 8006 (HTTPS) است.

Proxmox = KVM + LXC + رابط وب + ابزارهای مدیریتی. پورت وب: 8006.
📌 نکات طلایی برای امتحان (جمع‌بندی نهایی)
  • PID 1: در systemd = systemd، در SysVinit = init.
  • GRUB Legacy: /boot/grub/menu.lst (دبیان) یا grub.conf (رد هت).
  • GRUB 2: grub.cfg را هرگز مستقیم ویرایش نکنید. از grub-mkconfig یا grub2-mkconfig استفاده کنید.
  • Single User Mode: در اوبونتو init=/bin/bash، در رد هت rd.break enforcing=0.
  • systemd targetها: graphical.target (GUI)، multi-user.target (بدون GUI).
  • Runlevelها (SysVinit): 3 = چند کاربره با شبکه، 5 = چند کاربره با GUI.
  • دستورات خاموش‌سازی: poweroff (خاموشی کامل)، reboot (ری‌استارت)، halt (توقف CPU).
  • پیام‌های ورود: /etc/issue (محلی)، /etc/issue.net (SSH)، /etc/motd (بعد از لاگین).
  • KVM: Type 1، نیاز به vmx (Intel) یا svm (AMD).
  • Docker: برای نصب در دبیان از مخزن .../debian و در الما از مخزن .../centos استفاده می‌شود.
  • Proxmox: پورت 8006، بر پایه Debian، از KVM و LXC پشتیبانی می‌کند.
✅ تمرین عملی پیشنهادی
  • با dmesg و journalctl -b پیام‌های بوت سیستم خود را بررسی کنید.
  • با grub-mkconfig (یا grub2-mkconfig) یک فایل grub.cfg جدید تولید کنید.
  • در یک سیستم مجازی، با اضافه کردن rd.break (در الما) یا init=/bin/bash (در اوبونتو) رمز root را ریست کنید.
  • با systemctl وضعیت یک سرویس (مثلاً ssh) را مشاهده کرده و آن را فعال/غیرفعال کنید.
  • اگر دسترسی به سرور مجازی دارید، KVM را نصب کرده و با virt-manager یک VM ایجاد کنید.
  • Docker را روی یک سیستم تست نصب کرده و با docker run hello-world تأیید کنید.